//
//  XTStatusViewModel.swift
//  HrenryWeibo
//
//  Created by 熊涛 on 16/5/16.
//  Copyright © 2016年 熊涛. All rights reserved.
//
//获取微博数据

import UIKit
import SVProgressHUD

class XTStatusViewModel: NSObject {
    
    //MARK: - 是否正在请求网络数据
    var isRequest : Bool = false
    
    //创建单例
    static let sharedinstance : XTStatusViewModel = XTStatusViewModel()
    
    
    private override init() {
        super.init()
    }
    
    
    func loadStatus(since_id : Int64, max_id : Int64, callBack : ((status : [XTStatus]?, error : NSError?) -> ())) {
        
        //判断是否正在请求网络数据
        if isRequest == true {
            SVProgressHUD.showErrorWithStatus("正在请求网络数据,请稍后...")
            return
        }
        isRequest = true
        
        if let access_token = XTUserAccountViewModel.sharedInstance.userAccount?.access_token {
            //URL
            let strURL = "2/statuses/home_timeline.json"
            //参数  as [String : String]
            var parameters : [String : AnyObject] = ["access_token" : access_token]
            //参数since_id,max_id
            if since_id > 0 {
                parameters["since_id"] = NSNumber(longLong: since_id)
            }
            if max_id > 0 {
                //-1 是因为有一条是重复的
                parameters["max_id"] = NSNumber(longLong: max_id - 1)
            }
            
            //测试
//             parameters["count"] = 2
            
            //发送get请求
            XTNetWorkTool.sharedInstance.request(RequestMthod.GET, URLString: strURL, parameters: parameters, progress: nil, success: { (task, responseObject) -> Void in
                
                self.isRequest = false
                
                //返回的数据是字典
                if let result = responseObject as? [String : AnyObject] {
                    //字典里面微博数据的数组,数组里面是微博数据的字典
                    //注意:后面的是字典数组 不能转换错了
                    if let statuses = result["statuses"] as? [[String : AnyObject]]{
                        
                        //定义一个空数组
                        var statusArray = [XTStatus]()
                        
                        //遍历数组,字典转模型
                        for dict in statuses {
                            
                            let status = XTStatus(dict: dict)
                            //将模型添加到数组
                            statusArray.append(status)
                        }
                        //XTPrint(items: "statusArray : \(statusArray)")
                        //回调数据
                        callBack(status: statusArray, error: nil)
                    }
                }
                }) { (task, error) -> Void in
                    self.isRequest = false
                    callBack(status: nil, error: error)
                    XTPrint(items: "error : \(error)")
            }
        }
        
        
    }
    
    
    
}
